//package com.example.controller;
//
//import com.example.pojo.User;
//import com.example.service.UserService;
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
//import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.util.CollectionUtils;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.List;
//
//@RestController
//@RequestMapping("/consume")
//@DefaultProperties(defaultFallback = "consumeFallBak") //指定一个类的全局熔断方法
//public class ConsumerController {
//
//    @Autowired
//    private UserService userService;
//
//    // SpringMVC内置json处理工具
//    private ObjectMapper mapper = new ObjectMapper();
//
//    @GetMapping
//    @HystrixCommand //标记该方法需要熔断
//    public String consume(@RequestParam("ids") List<Long> ids) throws JsonProcessingException {
//        // 模拟报错
//        if (!CollectionUtils.isEmpty(ids) && ids.contains(1L))
//            throw new RuntimeException("太忙了");
//
//        List<User> users = this.userService.queryUserByIds(ids);
//        return mapper.writeValueAsString(users);
//    }
//
//    /**
//     * 熔断方法
//     * 返回值要和被熔断的方法的返回值一致
//     * 熔断方法不需要参数
//     *
//     * @return
//     */
//    public String consumeFallBak() {
//        return "请求繁忙，请稍后再试！";
//    }
//}